home *** CD-ROM | disk | FTP | other *** search
- // dlgline.cpp : implementation file
- //
-
- #include "stdafx.h"
- #include "itgdemo.h"
- #include "dlgline.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CDlgLine dialog
-
-
- CDlgLine::CDlgLine(CVBControl *pITGraph, CWnd* pParent /*=NULL*/)
- : CDialog(CDlgLine::IDD, pParent)
- {
- m_ITGraph = pITGraph;
- int fromIx = (int)m_ITGraph->GetNumProperty("ConnectFromIndex");
- int toIx = (int)m_ITGraph->GetNumProperty("ConnectToIndex");
-
- //{{AFX_DATA_INIT(CDlgLine)
- m_ConId = m_ITGraph->GetNumProperty("ConnectionId");
- m_ConData = m_ITGraph->GetNumProperty("ConnectionData");
- m_ConAlign = (int)m_ITGraph->GetNumProperty("ConnectionAlign");
- m_ConLabel = m_ITGraph->GetStrProperty("ConnectionLabel");
- m_ConFrom = m_ITGraph->GetStrProperty("List", fromIx);
- m_ConTo = m_ITGraph->GetStrProperty("List", toIx);
- m_ConArrow = (int)m_ITGraph->GetNumProperty("ConnectionArrow");
- m_ConWidth = (int)m_ITGraph->GetNumProperty("ConnectionLineWidth");
- //}}AFX_DATA_INIT
-
- m_ConColor = (COLORREF)m_ITGraph->GetNumProperty("ConnectionColor");
- }
-
- void CDlgLine::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CDlgLine)
- DDX_Text(pDX, IDC_EDTCONID, m_ConId);
- DDX_Text(pDX, IDC_EDTCONDATA, m_ConData);
- DDX_CBIndex(pDX, IDC_CMBCONALIGN, m_ConAlign);
- DDX_Text(pDX, IDC_EDTCONLBL, m_ConLabel);
- DDV_MaxChars(pDX, m_ConLabel, 255);
- DDX_Text(pDX, IDC_EDTCONFROM, m_ConFrom);
- DDX_Text(pDX, IDC_EDTCONTO, m_ConTo);
- DDX_CBIndex(pDX, IDC_CMBCONARROW, m_ConArrow);
- DDX_Text(pDX, IDC_EDTCONWIDTH, m_ConWidth);
- DDV_MinMaxInt(pDX, m_ConWidth, -1, 9);
- //}}AFX_DATA_MAP
-
- ::SetScrollRange(GetDlgItem(IDC_SCRCONWIDTH)->m_hWnd, SB_CTL, -1, 9, FALSE);
- ::SetScrollPos(GetDlgItem(IDC_SCRCONWIDTH)->m_hWnd, SB_CTL, m_ConWidth, TRUE);
- }
-
- BEGIN_MESSAGE_MAP(CDlgLine, CDialog)
- //{{AFX_MSG_MAP(CDlgLine)
- ON_WM_HSCROLL()
- ON_BN_CLICKED(IDREMOVE, OnRemove)
- ON_WM_DRAWITEM()
- ON_BN_CLICKED(IDC_CONCOLOR, OnConcolor)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CDlgLine message handlers
-
- void CDlgLine::OnOK()
- {
- if(UpdateData(TRUE)) {
- m_ITGraph->SetStrProperty("ConnectionLabel", m_ConLabel);
- m_ITGraph->SetNumProperty("ConnectionData", m_ConData);
- m_ITGraph->SetNumProperty("ConnectionAlign", m_ConAlign);
- m_ITGraph->SetNumProperty("ConnectionArrow", m_ConArrow);
- m_ITGraph->SetNumProperty("ConnectionLineWidth", m_ConWidth);
- m_ITGraph->SetNumProperty("ConnectionColor", (LONG)m_ConColor);
-
- CDialog::OnOK();
- }
- }
-
- void CDlgLine::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
- {
- int oldPos = pScrollBar->GetScrollPos();
- int newPos = oldPos;
-
- switch(nSBCode) {
- case SB_LINELEFT:
- case SB_PAGELEFT:
- newPos--;
- break;
- case SB_LINERIGHT:
- case SB_PAGERIGHT:
- newPos++;
- break;
- case SB_THUMBPOSITION:
- newPos = (int)nPos;
- break;
- }
- pScrollBar->SetScrollPos(newPos, TRUE);
-
- char tmpStr[8];
- sprintf(tmpStr, "%d", pScrollBar->GetScrollPos());
- SendDlgItemMessage(IDC_EDTCONWIDTH, WM_SETTEXT, 0, (LPARAM)tmpStr);
- }
-
- void CDlgLine::OnRemove()
- {
- int fromIx = (int)m_ITGraph->GetNumProperty("ConnectFromIndex");
- int toIx = (int)m_ITGraph->GetNumProperty("ConnectToIndex");
-
- m_ITGraph->SetNumProperty("RemoveFrom", toIx, fromIx);
- EndDialog(TRUE);
- }
-
- void CDlgLine::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
- {
- if(nIDCtl == IDC_CONCOLOR) {
- RECT rcItem;
- HBRUSH hbrItem;
- HDC hdcItem;
-
- rcItem = lpDrawItemStruct->rcItem;
- hbrItem = ::CreateSolidBrush(m_ConColor);
- hdcItem = lpDrawItemStruct->hDC;
- hbrItem = (HBRUSH)::SelectObject(hdcItem, hbrItem);
- ::Rectangle(hdcItem, rcItem.left, rcItem.top, rcItem.right, rcItem.bottom);
- hbrItem = (HBRUSH)::SelectObject(hdcItem, hbrItem);
- ::DeleteObject(hbrItem);
- }
-
- CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
- }
-
- void CDlgLine::OnConcolor()
- {
- CColorDialog dlgColor;
- dlgColor.m_cc.rgbResult = m_ConColor;
- dlgColor.m_cc.Flags = CC_ENABLEHOOK + CC_RGBINIT;
- if(dlgColor.DoModal()) {
- m_ConColor = dlgColor.GetColor();
- ::InvalidateRect(GetDlgItem(IDC_CONCOLOR)->m_hWnd, NULL, TRUE);
- }
- }
-